import axios from "axios";
// 获取当前环境，判断当前环境是否为开发阶段
// const isDev =process.env.NODE_ENV == 'development'

const request =axios.create({
  // baseURL:isDev ? '开发环境' : '生产环境'
  // baseURL:isDev ? 'http://121.89.205.189:3000/admin' : 'http://121.89.205.289:3000/admin'
  baseURL: 'http://121.89.205.189:3000/admin',
  timeout: 60000
})

// 添加请求拦截器
request.interceptors.request.use(function (config){
  // 在发送请求之前做些什么
//  console.log(config);
   // 1 获取 token
 const token= localStorage.getItem('token') || ''
   // 2 设置 token
 config.headers.token =token 
//  console.log(config);
  return config;
},function (error) {
  // 对请求错误做些什么
  return Promise.reject(error)
})

// 添加相应拦截器
request.interceptors.response.use(function (response) {
  // 对应数据做了什么
  return response.data
},function (error) {
  // 对应错误做点什么
  return Promise.reject(error)
})

// 自定义各种数据请求的axios
export default function ajax (config) {
  //1 先获取到请求的一些必要参数
  const {url ='',method ='GET',data={},headers ={}}=config

  // 2.判断我们请求的类型 get GET GeT
  switch (method.toUpperCase()) {
    case 'GEt':
      return request.get(url,{ params:data })
      case 'POST':
        //1.表单提交数据
        if(headers['content-type'] == 'application/x-www-form-url-encoded'){
           //转换参数类型，格式化数据
           const obj =new URLSearchParams()
           for (const key in data) {
              obj.append(key,data[key])
           }
           return request.post(url,obj,{headers})
        }
        // 2.文件数据
        if(headers ['content-type'] == 'multipart/form-data') {
               const obj =new FormData()
               for (const key in data) {
                 obj.append(key,data[key])
               }
        }
        // 3.json 数据
        return request.post(url,data)

        case 'PUT':
          //修改数据 ---数据更新
          return request.put(url,data)
        case 'DELETE':
            //删除数据 --- 数据的更新
        return request.delete(url,{ data })
        case 'PATCH':
            //更新局部资源
        return request.patch(url, data )
    default:
      // 如果前面全部都不是
      return request.request(config)
  }
}